/**
 * 
 */
package ar.utn.frgp.banco.dao;

import java.util.List;

import ar.utn.frgp.banco.entity.PlazoFijo;
import ar.utn.frgp.banco.exceptions.DataAccessException;
import ar.utn.frgp.banco.exceptions.PersonalisedException;

/**
 * @author PUSDERKIS
 *
 */
public interface PlazoFijoDao extends GenericDao{

	/**
	 * Crea el plazo fijo.
	 * @param pfijo el objeto plazo fijo.
	 * @param dni el dni del cliente
	 * @return verdadero si pudo crearlo.
	 * @throws DataAccessException en caso de error de acceso a datos.
	 * @throws PersonalisedException errores personalizados.
	 */
	void crearPlazoFijo(PlazoFijo pfijo) throws DataAccessException, PersonalisedException;
	
	/**
	 * consulta un plazo fijo.
	 * @param id
	 * @return
	 * @throws DataAccessException
	 * @throws PersonalisedException
	 */
	PlazoFijo consultarPlazoFijo(long id) throws DataAccessException, PersonalisedException;
	
	/**
	 * obtiene un listado de plazos fjios en base al DNI del cliente.
	 * @param dni
	 * @return
	 * @throws DataAccessException
	 * @throws PersonalisedException
	 */
	List<PlazoFijo> consultarHistoricoPlazoFijo(String dni) throws DataAccessException, PersonalisedException;
	
	/**
	 * actualiza un plazo fijo.
	 * @param pfijo
	 * @param id
	 * @return
	 * @throws DataAccessException
	 * @throws PersonalisedException
	 */
	boolean actualizarPlazoFijo(PlazoFijo pfijo) throws DataAccessException, PersonalisedException;
	
	List<PlazoFijo> plazosFijosPorCliente(String dni)throws DataAccessException;
	
}
